﻿namespace Gentings.Saas.Sites
{
    /// <summary>
    /// 网站区域提供者，每一个区域相当于一个网站模板。
    /// </summary>
    public abstract class AreaProvider : IAreaProvider
    {
        /// <summary>
        /// 名称。
        /// </summary>
        public virtual string Name => Area;

        private string? _area;
        /// <summary>
        /// 区域名称，需要唯一和程序中的区域名称相同。
        /// </summary>
        public virtual string Area
        {
            get
            {
                if (_area == null)
                {
                    var type = GetType().FullName!;
                    var index = type.IndexOf(".Areas.");
                    if (index != -1)
                    {
                        type = type[(index + 7)..];
                        index = type.IndexOf('.');
                        if (index != -1)
                            type = type.Substring(0, index);
                        _area = type;
                    }
                }
                return _area!;
            }
        }

        /// <summary>
        /// 描述。
        /// </summary>
        public virtual string? Description { get; }

        /// <summary>
        /// 图片地址。
        /// </summary>
        public virtual string? IconUrl { get; }

        /// <summary>
        /// 标签，多个标签以“,”分割。
        /// </summary>
        public virtual string? Tags { get; }
    }
}